The development of the EDVAC computer system of 1948 is often cited as the beginning of the computer era. Since that time, computer systems have evolved into extremely sophisticated devices, and computer systems may be found in many different settings. Computer systems typically include a combination of hardware, such as semiconductors and circuit boards, and software, also known as computer programs. Computer technology continues to advance at a rapid pace, with significant developments being made in both software and in the underlying hardware upon which the software executes. One significant advance in computer technology is the development of parallel processing, i.e., the performance of multiple tasks in parallel.
A number of computer software and hardware technologies have been developed to facilitate increased parallel processing. From a hardware standpoint, computers increasingly rely on multiple microprocessors to provide increased workload capacity. Furthermore, some microprocessors have been developed that support the ability to execute multiple threads in parallel, effectively providing many of the same performance gains attainable through the use of multiple microprocessors. From a software standpoint, multithreaded operating systems and kernels have been developed, which permit computer programs to concurrently execute in multiple threads so that multiple tasks can essentially be performed at the same time.
In addition, some computers implement the concept of logical partitioning, where a single physical computer is permitted to operate essentially like multiple and independent virtual computers, referred to as logical partitions, with the various resources in the physical computer (e.g., processors, memory, and input/output devices) allocated among the various logical partitions. Each logical partition executes a separate operating system, and from the perspective of users and of the software applications executing on the logical partition, operates as a fully independent computer.
Logical partitioning can be used to provide server consolidation or duplicate environments that allow a production server and a test server to exist on the same computer. Logical partitioning may also split processors among partitions, which share the processors. Some customers use the CPW (commercial processing workload) ratings of the computer to split processors according to the supposed CPW needs of the individual partitions.
Unfortunately, activity in one partition can degrade performance of another partition. A common reason for performance degradation in a partition is degradation of CPI (cycles per instruction). CPI is the number of clock cycles of the processor on which an instruction executes and usually refers to the average number of cycles per instruction for a program, job, or partition. A processor instruction is comprised of a number of elementary or micro operations, which vary in number and complexity depending on the instruction and the exact processor organization and complexity. A micro operation is an elementary hardware operation that can be performed during one clock cycle. Examples of micro operations are register operations (e.g., shift, load, clear, or increment) or arithmetic logic operations (e.g., add or subtract). Thus, a single processor instruction may take one or more clock cycles to complete based on the number and type of the micro operations that make up the processor instruction. But, the number of clock cycles for a single processor instruction can also be impacted if data needed by the instruction is temporarily unavailable because the data is not stored in a cache because the cache is full from programs executing in a separate partition.
A single cache may be used by multiple partitions either because the cache is shared between multiple processors that are assigned to different partitions or because a single processor and its cache are shared among multiple partitions. Both of those scenarios result in multiple partitions experiencing conflict over the same cache, which can result in CPI degradation.
Without a better way to manage multiple partitions, CPI degradation will continue to be a problem, which hurts the performance of logically-partitioned computers.